Welcome to pandas!

7.12 实例1 提取各分组前二名记录

import pandas as pd

df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.7.12 实例1 提取各分组前二名记录.xlsx")

print (df)

# t=df.groupby("班级").apply(lambda d:d.nlargest(2,"总分",keep= "all"))

t=df.groupby( "班级" ).apply( lambda d:d.nlargest(2, "总分" , keep = "all" )).droplevel( level = 0 )

#可以加 .droplevel(level=0) 来去掉索引

#此如第1名有两个同分,则取这两名,如第二名同分,则取三名

print (t)

返回:

班级 姓名 总分
0 3班 欧进兴 273
1 1班 叶翠 325
2 3班 毕红霞 234
... ... ...
38 3班 陈水平 161
39 3班 隆兴世 413
40 1班 陈秀娟 599

班级 姓名 总分
40 1班 陈秀娟 599
5 1班 曾庆文 591
28 1班 蒲菊花 591
17 2班 张晓聪 585
29 2班 徐丹平 504
15 3班 吴廷 557
9 3班 王启英 524